<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>

       /*
       ES5中新增的方法
        索引方法：indexOf()、lastIndexOf()
        循环方法：forEach()、map()、filter()、every()、some()
        归并方法：reduce()、reduceRight() 缩小方法 
        */
        // indexOf(target,index)从index开始往后查找数组中target首次出现的索引，第二个参数是可以省略的
        let nums=["aa","bb","cc","dd","aa","ee"];
        // console.log(nums.indexOf("aaa"));//-1如果查找不到，返回-1
        // console.log(nums.indexOf("aa",2));//从索引为2的开始查找aa首次出现的索引位置
        // console.log(nums.indexOf("aa"));

        // // lastIndexOf(target,index)从index从后往前查找数组中target首次出现的索引，第二个参数是可以省略的
        // console.log(nums.lastIndexOf("aa"));
        // console.log(nums.lastIndexOf("aa",3));//从索引为3的开始向前去查找aa的位置

        // forEach(回调函数)循环遍历数组，这个方法没有返回值的
        var result=nums.forEach(function(value,index,arrays){
            console.log(value);//元素值
            // console.log(index);//索引
            // console.log(arrays);//当前数组
        });
        console.log(result);

        //map(回调函数)返回每次函数调用的结果组成的新数组
        let arrs=[10,20,30,40];
        let result2=arrs.map(function(value,index,array){
            return value*3;
        });
        console.log(result2);

        //filter(回调函数)对数组元素进行过滤筛选，返回该函数会返回true的元素组成的新数组
        let arrs2=arrs.filter(function(value,index,array){
            return value>=10;
        });
        console.log(arrs2);

        // every(回调函数)用于检测所有元素是否符合指定条件，只要有一个不符合，则返回false，如果都符合，则返回true
        let flag=arrs.every(function(value,index,array){
            return value>=100;
        });
        console.log(flag);

        // some(回调函数)用于检测所有元素是否符合指定条件，只要有一个符合，则返回true，如果都不符合，则返回false
        let flag2=arrs.some(function(value,index,array){
            return value>=200;
        });
        console.log(flag2);
/* 
        reduce(回调函数)、reduceRight(回调函数)会遍历数组中所有的项，然后构造一个最终的返回值，一个是从前往后，一个从后往前
        callback(prev,cur,index,array)
            prev:第一个循环prev为数组的下标为0的值，后续指的是循环上一次循环的返回值
            cur：当前循环的元素值
            index：每次循环的下标
            array：数组 */


        let arrs3=[1,2,3,4];
        let sum=arrs3.reduce(function(prev,cur,index,array){
            console.log(prev,cur);
            return prev+cur;
        });
        console.log(sum);
        let sum2=arrs3.reduceRight(function(prev,cur,index,array){
            console.log(prev,cur);
            return prev+cur;
        });
        console.log(sum2);
    </script>
</head>
<body>
    
</body>
</html>